package com.log6z.dashborad.mapper;

import com.log6z.dashborad.domain.Appointment;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

/**
 * @author lu-profiess
 * @description 针对表【appointment(预约表)】的数据库操作Mapper
 * @createDate 2023-12-29 19:04:48
 * @Entity com.log6z.dashborad.domain.Appointment
 */

@Mapper
public interface AppointmentMapper extends BaseMapper<Appointment> {


    /**
     * 统计当前 打卡 叫号 作业的实时车辆
     *
     * @return
     */
    List<Integer> realTimeReal();

    /**
     * 按日统计
     * 累计 预约 打卡 叫号 作业 完成
     */
    List<Appointment> appointmentTimeCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    List<Appointment> clockTimeCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    List<Appointment> callNumberTimeCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    List<Appointment> tareWeighTimeCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
    List<Appointment> weighTimeCount(@Param("startTime") Date startTime, @Param("endTime") Date endTime);

    /**
     * 按月统计累计的出矿量
     * 统计顺序 年  当月 上月 上上月 大上月
     */
    List<Double> totalSaleCoalTon();


    /**
     * 统计预约-审核的时间间隔-分钟
     */
    List<HashMap<String,Integer>> carrierApproval();

    /**
     * 统计 叫号到-装货完成出场的折线图
     */
    List<HashMap<String,Integer>> callTimeToInParkTime();

    /**
     * 统计 进场-作业完成的折线图
     */
    List<HashMap<String,Integer>> tareWeighTimeToWeighTime();

    /**
     * 按小时统计 进、出矿的车辆
     */
    List<HashMap<String,Integer>> inParkAndOutHour();

    /**
     * 近15日的出矿吨位
     * @param custId
     * @return
     */
    List<HashMap<String,Double>> outTon15Day(@Param("custId") Integer custId);

    /**
     * 近15日有过拉运的客户
     * @return
     */
    List<Appointment> outTon15DayCustInfo();

    /**
     * 按开始时间和结束时间 统计煤矿销售--按客户分组
     * @param beginMonthTime
     * @param endMonthTime
     * @return
     */
    List<Appointment> saleCoalTonTimeAround(@Param("beginTime") Date beginMonthTime,@Param("endTime") Date endMonthTime);


}




